const { app, BrowserWindow, dialog, Menu } = require('electron');
// 导入 Node.js 的 path 模块
const path = require('node:path');
const axios = require('axios');
const os = require("node:os");

// 隐藏应用菜单
Menu.setApplicationMenu(null);

const createWindow = () => {
  // 创建窗口
  const win = new BrowserWindow({
    width: 1366,
    height: 768,
    icon: path.join(__dirname, '/src/favicon.ico'),
    webPreferences: {
      nodeIntegration: true, // 需要
    }
  })

  // 全屏
  // win.maximize()

  // 加载index.html
  const mac = getMacAddress();
  // let mac = null
  // if (os.networkInterfaces().WLAN){
  //   mac = os.networkInterfaces().WLAN[0].mac
  // } else {
  //   mac = os.networkInterfaces()['以太网'][0].mac
  // }
  console.log('mac ===', mac)
  axios.post('http://q.feiyaoqiye.com/index.php/api/index/mac', { mac: mac }).then((response) => {
    console.log('res ===', response);
    if (response.status === 200) {
      if (response.data.code === 200) {
        win.loadURL('http://q.feiyaoqiye.com/index.php/index/index/login.html')
      } else {
        console.log('response === ', response)
        win.loadFile('./src/index.html', { search: `mac=${mac}` });
      }
    } else {
      OperateError(win);
    }
  }).catch(() => {
    OperateError(win);
  })

  // 打开开发工具
  // win.webContents.openDevTools();
}

function getMacAddress() {
  const interfaces = os.networkInterfaces();
  for (const iface of Object.values(interfaces)) {
    for (const interfaceInfo of iface) {
      if (!interfaceInfo.internal && interfaceInfo.mac !== '00:00:00:00:00:00') {
        return interfaceInfo.mac;
      }
    }
  }
  return null;
}

function OperateError(win) {
  dialog.showMessageBox(win, {
    type: 'info', // 可选类型有 info, warning, error, question
    buttons: ['OK'], // 按钮文本数组
    title: '提示',
    message: '服务器请求异常'
  }).then(() => {
    app.quit();
  });
}

// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
  createWindow();
  app.on('activate', () => {
    // 在 macOS 系统内, 如果没有已开启的应用窗口
    // 点击托盘图标时通常会重新创建一个新窗口
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  })

})

// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此, 通常
// 对应用程序和它们的菜单栏来说应该时刻保持激活状态, 
// 直到用户使用 Cmd + Q 明确退出
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

// 在当前文件中你可以引入所有的主进程代码
// 也可以拆分成几个文件，然后用 require 导入。